package vue;

import javax.swing.*;

import model.Archer;
import controller.Controleur;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;

/**
 * Class FenetrePrincipale
 */
public class FenetrePrincipale extends JFrame implements ActionListener {
	
	
	private static final long serialVersionUID = 1L;
	
	private DessinCase cases[][];
	private Controleur controleur;
	private boolean tour;
	private West west;
	private Grille grille;
	private int vita;

	
	public Controleur getControleur(){
		
		return this.controleur;
	}
	
	//private final JPanel damier;
	//private final JLabel etiquette;
	
	public FenetrePrincipale (Controleur controleur) {

		this.controleur = controleur;
		setPreferredSize(new Dimension(1000,830)); 
		setBackground(Color.darkGray);
		setSize(getPreferredSize());
		setLayout(new BorderLayout());
		
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension tailleEcran = tk.getScreenSize();
		int largeurEcran = tailleEcran.width;
		int hauteurEcran = tailleEcran.height;
		
		Image fond = tk.getImage("src/vue/test.jpg");
		FenetreFond fenFond = new FenetreFond(fond);
		this.setContentPane(fenFond);
		//this.setVisible(true);


		// setLayout permet de choisir la politique de placement
		// des objets graphiques dans un conteneur
		// ici la fenêtre
		// on choisit un FlowLayout : les éléments sont disposés 
		// les uns à la suite des autres
		setLayout(new FlowLayout());

		// on choisit de tuer l'application
		// lorsque l'on clique sur la croix
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// création d'une barre de menu
		// avec un menu appelé "menu"
		// dans ce menu, on a deux choix
		// "Start" pour commencer une partie
		// "Quitter" pour quitter l'application
		JMenuBar menubar=new JMenuBar();
		JMenu menu=new JMenu("Menu");	
		JMenuItem it1=new JMenuItem("Nouvelle partie");

		// Lorsque l'on clique sur l'item Start, 
		// on déclenche une action appelée "Start"
		it1.setActionCommand("Nouvelle partie");

		JMenuItem it2=new JMenuItem("Quitter");
		it2.setActionCommand("Quitter");

		// ajout des items au menu
		menu.add(it1);
		menu.add(it2);	    	
		// ajout du menu à la barre de menu
		menubar.add(menu);	
		// Les évènements sur les items seront écoutés par l'échiquier
		it1.addActionListener(this);	
		it2.addActionListener(this);
		// on affecte la barre de menu à la fenêtre Echiquier
		setJMenuBar(menubar);

		// on crée une zone de dessin "damier" 
		// avec une politique de placement 
		// en grille 8X8
		// cette zone contiendra les 8X8 cases 

		west = new West();
		JPanel center = new JPanel();
		grille = new Grille(west);
		center.add(grille);
		add(center, BorderLayout.CENTER);
		add(west, BorderLayout.WEST);
		//grille.setScore1(6);
		//add(west, BorderLayout.WEST);
		//damier=new JPanel(new GridLayout(8,8,0,0));
		//damier.setSize(400,400);
		//etiquette=new JLabel("Aucune partie en cours");

		// on crée un tableau de cases 8X8
		cases=new DessinCase[8][8];

		// on alterne les couleurs pour obtenir un damier
		// chaque case est ajoutée au damier
		// grâce à la politique de placement des objets
		// les 8 premières cases seront placées sur 
		// la première ligne du damier, etc.
		for(int i=0;i<8;i++)
			for(int j=0;j<8;j++){
				if((i+j)%2==0)
					cases[i][j]=new DessinCase(i,j, this, Color.blue);
				else
					cases[i][j]=new DessinCase(i,j, this, Color.WHITE);
				// ajout de la case créée sur le damier
				grille.getDamier().add(cases[i][j]);
			}	
		// on insère le damier dans la fenêtre
		add(grille.getDamier());
		// on insère le label dans la fenêtre
		add(grille.getEtiquette());
	}
	
	private class FenetreFond extends JPanel {
		 
		private Image imag;
 
		public FenetreFond(Image s)  {
			imag = s;
		}
 
		public void paintComponent(Graphics g) {
			g.drawImage(imag, 0, 0, getWidth(), getHeight(), this);
		}
	}
	
	
	
	private void setScore1(int vi) {
		// TODO Auto-generated method stub

	}
	// fonction qui récupère les actions
	// ici les actions correspondent aux évènements
	// sur les items du menu
	public void actionPerformed(ActionEvent e){	
		// Si on clique sur Quitter alors on tue l'application
		if(e.getActionCommand().equals("Quitter"))
			System.exit(0);
		else // Sinon, on a cliqué sur "Start" et on crée une nouvelle partie
			controleur.nouvellePartie();
	}

	/*public boolean getTour(){
		return tour;
	}
	public void changeTour(){ 
		// change le booléen tour et met à jour l'étiquette
		tour=!tour;
		if(tour){
			grille.getEtiquette().setText("Au tour des bleus");
		}
		else{
			grille.getEtiquette().setText("Au tour des rouges");    
		}

	}
	*/
//	private void nouvellePartie(){
//
//		grille.getEtiquette().setText("Au tour des bleus");
//		// les bleus commencent donc
//		// tour est initialisé à vrai
//		tour=true;
//
//		// on supprime les pièces de la partie précédente
//		for(int i=0;i<8;i++)	
//			for(int j=0;j<8;j++)
//				cases[i][j].getCase().setPerso(null);
//
//		// on place les pièces	
//		for(int i=0;i<8;i++){
//			cases[1][i].getCase().setPerso(new Archer(cases[1][i].getCase(),,9));
//			grille.setVitalite1(cases[1][i].getCase().getPerso().getVitalite());
//		}
//		for(int i=0;i<8;i++){
//			cases[6][i].getCase().setPerso(new Archer(cases[6][i].getCase(),false,7));
//			grille.setVitalite2(cases[6][i].getCase().getPerso().getVitalite());
//		}


		// une fois toutes les pièces placées, on rafraichit l'affichage
		// la partie commence !
//		repaint();
//	}

	

	
	public DessinCase[][] getCases() {
		return cases;
	}


	public void setCases(DessinCase[][] cases) {
		this.cases = cases;
	}

	public Grille getGrille() {
		return grille;
	}

}


